package br.com.JZSolution.domineduplex.rede.protocolo;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.security.NoSuchAlgorithmException;

import br.com.JZSolution.domineduplex.DomineDuplex;
import br.com.JZSolution.domineduplex.gui.util.ComunicadorDeMensagens;
import br.com.JZSolution.domineduplex.modelo.InformacoesTransferencia;
import br.com.JZSolution.domineduplex.modelo.RespostaReceptor;

public class ProtocoloEnvio {
	
	public boolean confirmarEnvio(OutputStream output,InputStream input, File arquivo){
		try {
			//primeiro envio de pergunta ao outro se deseja prosseguir
			InformacoesTransferencia infoTransf = new InformacoesTransferencia(DomineDuplex.getInstance().getUsuario(),arquivo);

			//aqui escrevo o que vou enviar pro outro lado!
			ObjectOutputStream oos = new ObjectOutputStream(output);
			oos.writeObject(infoTransf);
			
			//leio a resposta Ok ou NOK
			ObjectInputStream ois = new ObjectInputStream(input);
			RespostaReceptor resposta = (RespostaReceptor)ois.readObject();
			
			if(resposta.isAceito()){
				Thread t = new Thread(){
					@Override
					public void run() {
						ComunicadorDeMensagens.arquivoAceito(true);
					}
				};
				//t.start();
				return true;
			}else{
				ComunicadorDeMensagens.arquivoAceito(false);
				return false;
			}
			//TODO tratar as Exception  separadamente
		}catch (NoSuchAlgorithmException e) {
			// TODO: handle exception
		}catch (FileNotFoundException e) {
			// TODO: handle exception
		}catch (IOException e) {
			// TODO: handle exception
		}catch (Exception e) {
			// TODO: handle exception
		}
		
		return false;
	}
}
